export interface DialogOptions {
  /**
   * ID选择器
   */
  selector?: string;
  /**
   * 弹窗标题
   */
  title?: string;
  /**
   * 弹窗内容
   */
  message?: string;
  /**
   * 是否显示取消按钮
   */
  showCancelButton?: boolean;
  /**
   * 确认按钮文本
   */
  confirmText?: string;
  /**
   * 取消按钮文本
   */
  cancelText?: string;
  /**
   * 点击确定时执行的回调
   */
  onConfirm?: () => void;
  /**
   * 点击取消时执行的回调
   */
  onCancel?: () => void;
}

/**
 * 获取当前页面的上下文
 */
function getContext() {
  const pages:any = getCurrentPages();
  return pages[pages.length - 1];
}

/**
 * 弹窗管理类
 */
export default class Dialog {
  private _dialog: any;

  constructor(options?: DialogOptions) {
    const ctx = getContext() as AnyObject;
    if (ctx) {
      // #ifdef MP
      const dialog = ctx.selectComponent(options?.selector ?? "#x-dialog");
      this._dialog = dialog.$vm;
      // #endif

      if (options) {
        Object.keys(options).forEach((key) => {
          if ((options as any)[key]) {
            this._dialog.props[key] = (options as any)[key];
          }
        });
      }
    }
  }

  /**
   * 显示弹窗
   */
  show(opt?: { title?: string; message: string }) {
    if (opt?.title) {
      this._dialog.props.title = opt.title;
    }
    if (opt?.message) {
      this._dialog.props.message = opt?.message;
    }
    this._dialog.onShow();
  }

  /**
   * 隐藏弹窗
   */
  hide() {
    this._dialog.onHide();
  }
}

function getCurrentPages() {
  throw new Error("Function not implemented.");
}
